package array;

import java.util.HashMap;
import java.util.Map;

/**
 * File Name: majorityElement
 * Date: 2020/3/19 16:05
 * Author: liangling
 * Description 如果数组中多一半的数都是同一个，则称之为主要元素。给定一个整数数组，找到它的主要元素。若没有，返回-1。
 */
public class majorityElement {

    public static void main(String[] args) {
        int[] nums = {2,2};
      int a = majorityElementw(nums);
        System.out.println("a的值"+a);
    }

    public static int majorityElementw(int[] nums) {

        if(nums.length==0){
            return -1;
        }
        if (nums.length==1){
            return nums[0];
        }
        int count = 0;
        //定义一个Map，将数组中元素存为key,value用来统计这个元素在数组中出现的数字
        Map<Integer,Integer> map = new HashMap<>();
        for (int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i])){
                int tem = map.get(nums[i]);
                map.put(nums[i],tem+1);
            }else{
                map.put(nums[i],1);
            }
        }
        //遍历map集合，判断value和数组长度的一半，符合条件的value对应的key就是在数组中最多数字
        int mid = nums.length/2;
        for (Integer key:map.keySet()) {
           if(mid < map.get(key)){
              return key;
           }else{
               count =-1;
           }
        }
        return count;


    }
}
